home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Publication 9
/
Publication_09_1996_High-Tech_de_Side_B.d64
/
basic - piano
(
.txt
)
next >
Wrap
Commodore BASIC
|
2023-02-26
|
13KB
|
524 lines
100 rem piano
130 :
150 :
170 :
180 print"[147]":poke53281,15:poke53280,12:print"[144]"
190 dimn(255),p(255)
200 gosub4140:rem* initialize
210 gosub2380: rem* title
220 gosub1030: rem* piano keyboard
230 ifno=0thengosub4870:rem* tune
240 goto3410: rem* menu #1
250 gosub1230: rem* keyboard letters
260 gosub2900: rem* instructions
270 gosub2770:rem* "enter notes"
280 gosub1640:rem* input notes
290 gosub2540:rem* erase letters
300 gosub1320:rem* play song
310 gosub700: rem* menu #2
320 goto3410
330 rem start all voices
340 rem"[184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184]
350 [151]sid[170]24,15:[139]n[177]lk[167][142]
360 [151]pa(vc),fr(n)[173]256:[151]pb(vc),fr(n)[175]255
370 [151]sid[170]4[170]7[172]vc,wv(vc):pv[178]vc:vc[178]vc[170]1:[139]vc[178]3[167]vc[178]0
380 [142]
390 [143] sid setup
400 [143]"frefrefrefrefrefrefrefrefre
410 sid=54272:restore
420 forx=0to2
430 read at(x),de(x),su(x),re(x)
440 read pw(x),wv(x)
450 ad(x)=at(x)*16+de(x)
460 sr(x)=su(x)*16+re(x)
470 next x:re=0
480 data 00,00,15,11,1000,17
490 data 00,00,15,11,1000,17
500 data 00,00,15,11,1000,17
510 forx=0to2:y=7*x:ifre<re(x)thenre=re(x)
520 pokesid+5+y,ad(x)
530 pokesid+6+y,sr(x)
540 pokesid+2+y,pw(x)/256
550 pokesid+3+y,pw(x)and255
560 pokesid+4+y,8:rem reset osc.
570 pokesid+4+y,wv(x)-1:rem null
580 next x:gosub5180
590 k$="awsedftgyhujkolp:;*=^"+chr$(13)+"0":rem 0=pause
600 lk=len(k$):kk=2^(1/12)
610 f1=523.251132:rem 1st note
620 dim fr(lk),k(255)
630 fori=1tolk-1
640 k=asc(mid$(k$,i,1)):k(k)=i
650 fr(i)=5.8*f1+30
660 f1=f1*kk:next i
670 forx=0to2:y=7*x:pa(x)=sid+1+y:pb(x)=sid+y:next
680 k(i)=0:fr(i)=0:rem pause=note '0'
690 return
700 rem****************
710 rem* menu #2 *
720 rem****************
730 print""spc(s1)" return[146] druecken zum wiederbeginn"
740 printspc(s1)"1[146]-wiederbeginn? 2[146]-add notes?"
750 printspc(s1)"3[146]-korrigieren falsche note? 4[146]-save on disk?"
760 printspc(s1)"5[146]-save on tape? 6[146]-change intro?"
770 printspc(s1)"7[146]-stimmwechsel? 8[146]-other change?"
780 printspc(s1)" [184][184][184][184][184][184][184][184][184][184][184][184][184] waehle![146][184][184][184][184][184][184][184][184][184][184][184][184][184]":gosub5180
790 geta$:ifa$<>""then790
800 geta$:ifa$=""then800
810 gosub3710:ifa$=chr$(13)thengoto3410
820 ifval(a$)=0then730
830 onval(a$)gosub1320,3610,3800,3000,1890,850,4490,4570
840 goto730
850 print"[147]bitte warten ich speichere ab..."
860 sv=6*4096-2:i=0
870 i=i+1:pokesv+2*i,n(i):pokesv+2*i+1,p(i):print"note [157][157][157]"i
880 ifi<mthen870
890 forj=1to20:pokesv+2*i+j,0:next
900 print"[147] aendern data......"
910 poke53281,6
920 print"50009data"m:poke198,3:poke631,13:poke632,13:poke633,13
930 print"k=50010:m="m":i=-19:sv=6*4096-1"
940 print"goto620":end
950 i=i+20:s$="":ifi>2*mthenprint"[147][144]":poke53281,15:list50300-50305
960 print"[147]";:poke198,3:poke631,13:poke632,13:poke633,13
970 print""k"data";
980 forj=0to9:s=peek(sv+i+2*j):p=peek(sv+i+2*j+1)
990 a$=mid$(str$(s),2):b$=mid$(str$(p),2)
1000 s$=s$+a$+","+b$+",":next
1010 prints$+"[157] ":k=k+1:print"k="k":m="m":i="i":sv="sv
1020 print"goto620":end
1030 rem*********************
1040 :
1050 rem** create keyboard **
1060 :
1070 rem*********************
1080 n=1
1090 p1$="[146][144][167]":p2$=p1$:p3$=p1$
1100 k1$="[144] [144] ":fori=1to12:p1$=p1$+k1$:next
1110 p1$=p1$+"[144] [144] [146]"
1120 k2$=" [146][144][170]":fori=1to13:p2$=p2$+k2$:next:l=len(p2$):p2$=left$(p2$,l-1)
1130 p3$=p3$+" [146][144][167] [146][144][167] [146][144][167] "
1140 print"":fori=1to12:printp2$:next
1150 print"":fori=1to5:printp1$;:next
1160 print"":fori=1to5:printp3$;
1170 gosub330:n=n+5:forpp=1to100:next
1180 next
1190 print"[146][144][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164]"
1200 print"";
1210 print"[144][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]"
1220 gosub1540:return
1230 rem**********************
1240 :
1250 rem** keyboard letters **
1260 :
1270 rem**********************
1280 print""spc(s1)" w[146][165] e[146] t[146] y[146] u[146] o[146] p[146] *[146] ^"
1290 print""spc(s1);
1300 print" a[146] s[146] d[146] f[146] g[146] h[146] j[146] k[146] l[146] :[146] ;[146] =[146] rtn"
1310 return
1320 rem****************
1330 :
1340 rem** play music **
1350 :
1360 rem****************
1370 pokesid+24,15:zz=64
1380 forq=1tom:n=n(q):p=p(q)
1390 aa=ti:sp=0:ifn>=23then1410
1400 sp=sp(n):h=h(n)
1410 print" [157][157][157][157]"q
1420 gosub330:pokev3,0
1430 ifsp<>0then1480
1440 ifti<aa+pthen1440
1450 goto1520
1460 :
1470 rem* play piano key *
1480 x=sp>255:y=sp>zz:pokev0,-4*x:sp=sp+255*x:ss=sp+zz*(sp>zz)
1490 pokev1,sp:pokev2,h:pokev4,ss:pokev5,h:pokev3,4-8*y
1500 ifti<aa+p then1500
1510 gosub5140
1520 next:forpp=1to1000:next:pokev3,0
1530 gosub5180:return
1540 rem*****************
1550 :
1560 rem** piano gliss **
1570 :
1580 rem*****************
1590 pokesid,0: return:print@*!: pokesid+24,15
1600 forpp=1to10:r=rnd(1):n=23*r+1:gosub330
1610 pokev1,255*r:pokev2,100+30*r:pokev3,4:forqq=1to10:next:next:pokev3,0
1620 gosub5140:forpp=0to500:next
1630 gosub5180:return
1640 rem*****************
1650 :
1660 rem** input notes **
1670 :
1680 rem*****************
1690 m=0:n=0:goto1870
1700 m=m+1:m$=mid$(str$(m),2):print" [157][157][157]"m$
1710 getn$:ifn$=""thengosub5140:goto1710
1720 nn=asc(n$+z$):aa=ti
1730 ifnn=n0thenm=m-1:gosub3710:return
1740 ifnn=n1thenm=m-1:goto1710
1750 m$=mid$(str$(m),2)
1760 print" [157][157][157]"m$
1770 n=k(nn)
1780 gosub330:sp=sp(n):h=h(n)
1790 ifsp=0then1820
1800 x=sp>255:pokev0,-4*x:sp=sp+255*x
1810 pokev1,sp:pokev2,h:pokev3,4
1820 ifpeek(kb)<>64then1820:rem wait
1830 p=ti-aa
1840 gosub5140
1850 pokev3,0
1860 geta$:ifa$<>""then1860
1870 n(m)=n:p(m)=p:ifm>499thengosub3710:return
1880 goto1700
1890 rem*************************
1900 :
1910 rem** save a song on tape **
1920 :
1930 rem*************************
1940 gosub3710
1950 printsd$"name des liedes ";
1960 inputnm$
1970 open1,1,1,nm$
1980 print#1,m:print#1,z$
1990 fori=1tom
2000 print#1,n(i)
2010 print#1,p(i)
2020 next:close1
2030 gosub3710
2040 return
2050 rem*************************
2060 :
2070 rem** call song from tape **
2080 :
2090 rem*************************
2100 printsd$
2110 input"name deines liedes[214][157][157][157]";nm$
2120 ifnm$="[214]"then2100
2130 gosub3710
2140 gosub5140
2150 open1,1,0,nm$
2160 input#1,m:input"1,z$
2170 [129]i[178]1[164]m
2180 [132]1,n(i)
2190 [132]1,p(i)
2200 [130]
2210 [160]1
2220 [141]3710:[153]sd$[170]""[170]nm$
2230 [141]1320
2240 [142]
2250 [143]****************************
2260 :
2270 [143]** input "corrected" note **
2280 :
2290 [143]****************************
2300 [161]n$
2310 aa[178]ti:[161]n$:sn[178][194](kb):[139]n$[178]""[167]2310
2320 nn[178][198](n$):n[178]k(nn)
2330 [141]330
2340 [143]* wait for note to change *
2350 [139][194](kb)[178]sn[167]2350
2360 p[178][181]((ti[171]aa)[173]2[170]1)
2370 [141]5180:[142]
2380 [143]***********
2390 :
2400 [143]** title **
2410 :
2420 [143]***********
2430 [153]sd$"stop"
2440 [153][166]12)" (NULL)wait wait wait wait wait wait"
2450 [153][166]12)" wait wait wait wait wait wait wait wait wait"
2460 [153][166]12)" wait wait wait wait (NULL) wait wait wait"
2470 [153][166]12)" waitstep wait wait wait wait(NULL) wait wait wait"
2480 [153][166]12)" wait wait wait wait wait wait "
2490 [129]pp[178]0[164]19:[151]1984[170]pp,102:[151]2023[171]pp,102:[130]
2500 [129]pp[178]0[164]19:[151]56256[170]pp,6:[151]56295[171]pp,6:[130]
2510 [129]pp[178]0[164]19:[151]1024[170]pp,102:[151]1063[171]pp,102:[130]
2520 [129]pp[178]0[164]19:[151]55296[170]pp,6:[151]55335[171]pp,6:[130]
2530 [142]
2540 [143]******************
2550 :
2560 [143]** erase letters *
2570 :
2580 [143]******************
2590 [129]pp[178]0[164]39:[151]crt[170]pp,32:[130]
2600 [129]pp[178]0[164]39:[151]crt[170]14[172]wd[170]pp,32:[130]
2610 [142]
2620 [143]************************
2630 :
2640 [143]** keyboard/no sound **
2650 :
2660 [143]************************
2670 [129]j[178]1[164]6:[153]"":[129]k[178]1[164]j:[153]"";:[130]:[153][166]s1);
2680 [129]i[178]1[164]13:[153]" wait ";:[130]:[130]
2690 [129]j[178]1[164]6:[153]"":[129]k[178]1[164]j:[153]"";:[130]:[153][166]s1);
2700 [129]i[178]1[164]13:[153]"fn then";:[130]:[130]
2710 [129]j[178]1[164]6:[153]"":[129]k[178]1[164]j:[153]"";:[130]
2720 [153][166]s1)"fn "[166]6)"thenfn"[166]10)"thenfn"[166]7)"thenfn":[130]
2730 [153]""[166]s1)"tototototototototototototototototototototototototototototototototototototototo"
2740 [153]""[166]s1);
2750 [153]"usrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusr"
2760 [142]
2770 [143]*****************
2780 :
2790 [143]* 'enter notes' *
2800 :
2810 [143]*****************
2820 [153]"":c$[178]"wait"
2830 [141]5140:[129]l[178]1[164]10
2840 [153][166]s1)c$"noteneingabe"
2850 [153]"on";
2860 [139]c$[178]"wait"[167]c$[178]"":[137]2880
2870 c$[178]"wait"
2880 [129]k[178]1[164]100:[130]:[130]
2890 [153]:[142]
2900 [143]******************
2910 :
2920 [143]** instructions **
2930 :
2940 [143]******************
2950 [153]""
2960 [153][166]s1)" terminate with a "[199](34)"."[199](34)" "
2970 [153][166]s1)" enter a "[199](34)"0"[199](34)" fuer pause. "
2980 [153][166]s1)" after a bad note enter "[199](34)"-"[199](34)" "
2990 [142]
3000 [143]*************************
3010 :
3020 [143]** save a song on disk **
3030 :
3040 [143]*************************
3050 [141]3710:nw[178]wv(0)
3060 [153]sd$"name of the song";
3070 [133]nm$:[139][200](nm$,1)[179][177]" "[167]nm$[178]" "[170]nm$
3080 [141]3710
3090 [153]sd$"which drive ";
3100 [133]" 0cmdcmdcmd";dr$:d0$[178]dr$
3110 [141]3710
3120 [153]sd$"replace an existing song";:[133]" ncmdcmdcmd";a$
3130 [139][200](a$,1)[178]"y"[167]d0$[178]"@"[170]dr$
3140 [159]15,8,15:r$[178][199](13)
3150 [159]2,8,2,d0$[170]":"[170]nm$[170]",s,w"
3160 [141]4810:[139]e0[179][177]0[167]3200
3170 [152]2,m;r$;nw;r$
3180 [129]i[178]1[164]m
3190 [152]2,n(i);r$;p(i);r$:[130]
3200 [160]2:[160]15
3210 [141]3710:[142]
3220 [143]*************************
3230 :
3240 [143]** call song from disk **
3250 :
3260 [143]*************************
3270 [141]5210:[141]3710
3280 [153]sd$;
3290 [133]"name your song: (NULL)cmdcmdcmd";nm$:[139]nm$[178]"(NULL)"[167]3280
3300 [139][200](nm$,1)[179][177]" "[167]nm$[178]" "[170]nm$
3310 [141]3710:[159]15,8,15:[153]sd$;
3320 [159]2,8,2,dr$[170]":"[170]nm$[170]",s,r"
3330 [141]4810:[139]e0[179][177]0[167][160]2:[160]15:[142]
3340 [132]2,m,nw
3350 [129]i[178]1[164]m
3360 [132]2,a$,b$
3370 n(i)[178][197](a$):p(i)[178][197](b$):[130]
3380 [160]2:[160]15:[141]4550
3390 [141]3710:[153]sd$[170]""[170]nm$
3400 [141]1320:[141]3710:[142]
3410 [143]***************
3420 [143]* menu #1 *
3430 [143]***************
3440 [141]3710:[141]2540:[141]5180
3450 [153]sd$"1wait:lied von diskette laden"
3460 [153][166]s1)"2wait:lied von band laden"
3470 [153][166]s1)"3wait:komponieren"
3480 [153][166]s1)"4wait:ende"
3490 [129]i[178]1[164]3
3500 [153]"on ":[129]pp[178]1[164]100:[130]
3510 [153]"on frefrefrefrefrefrefrefrefrefrefrefrefre waehle !waitfrefrefrefrefrefrefrefrefrefrefrefre":[129]pp[178]1[164]100:[130]
3520 [130]
3530 [141]5180
3540 [161]a$:[139]a$[178]""[167]3540
3550 [141]3710
3560 [139][197](a$)[178]0[167]3450
3570 [145][197](a$)[137]3590,3600,250
3580 [153]sd$:[151]sid[170]24,0:[128]
3590 [141]3220:[137]700
3600 [141]2050:[137]700
3610 [143]*************
3620 :
3630 [143]* add notes *
3640 :
3650 [143]*************
3660 :
3670 [141]3710:[141]1230
3680 [141]2900:[141]2770
3690 [141]1700:[141]2540
3700 [141]1320:[142]
3710 [143]**************
3720 :
3730 [143]** erase **
3740 :
3750 [143]**************
3760 [153]"";
3770 [129]t[178]1[164]9:[153]cl$:[130]
3780 [141]2540
3790 [153]"";:[142]
3800 [143]**********************
3810 :
3820 [143]** remove bad notes **
3830 :
3840 [143]**********************
3850 [141]3710
3860 [153]sd$" press @wait when bad note is played. "
3870 [153][166]s1)"there are "m" notes.."
3880 [153][166]s1)"start at note#";:[133]" spc(cmdcmdcmd";pz
3890 [153][166]s1)"speed of display(1 to 10:1=fast)";:[133]" spc(cmdcmdcmd";py
3900 [129]q[178]pz[164]m:n[178]n(q):p[178]p(q)
3910 aa[178]ti:sp[178]0:[139]n[177][178]23[167]3930
3920 sp[178]sp(n):h[178]h(n)
3930 [153]" cmdcmdcmdcmd"q
3940 [141]330
3950 [139]sp[179][177]0[167]3980
3960 [139]ti[179]aa[170]p[167]3960
3970 [137]4030
3980 x[178]sp[177]255:[151]v0,[171]4[172]x:sp[178]sp[170]255[172]x
3990 [151]v1,sp:[151]v2,h:[151]v3,4
4000 [139]ti[179]aa[170]p [167]4000
4010 [141]5140
4020 [151]v3,0
4030 [129]k[178]1[164]10[172]py
4040 [161]n$:bn[178][198](n$[170]z$)
4050 [139]bn[178]n2[167]k[178]100:sq[178]q:q[178]m
4060 [130]:[130]
4070 [141]3710
4080 [141]1230
4090 [153]sd$" please enter correct note #"sq
4100 [141]2250
4110 n(sq)[178]n::p(sq)[178]p:[141]3710
4120 [141]1320
4130 [141]5140:[141]2540:[142]
4140 [143]*******************
4150 :
4160 [143]** initialize **
4170 :
4180 [143]*******************
4190 [141]2380:z$[178][199](0)
4200 [141]390:ps[178][198]("0")
4210 kb[178]203
4220 sd$[178]""
4230 n0[178][198]("."):n1[178][198]("-"):n2[178][198]("@"):wd[178]40:crt[178]1024
4240 vd[178]53248
4250 v0[178]vd[170]16:v1[178]vd[170]4:v2[178]vd[170]5:v3[178]vd[170]21
4260 v4[178]vd[170]6:v5[178]vd[170]7
4270 d(0)[178]55295[170]10[172]wd:d(1)[178]55295[170]5[172]wd
4280 d3[178]crt[170]14[172]wd:d4[178]d3[170]wd[171]1
4290 cr(1)[178]1:cr(0)[178]0
4300 [143]*****************************
4310 :
4320 [143]**spaces for keyboard notes**
4330 :
4340 [143]*****************************
4350 [134]sp(255),h(255)
4360 [129]i[178]1[164]lk
4370 [135]sp,h:sp(i)[178]8[172]sp:h(i)[178]130[171]30[172]h:[130]:sp(0)[178]0
4380 [141]5180
4390 [131]3,0,4,1,6,0,7,1,9,0,12,0,13,1,15,0,16,1,18,0,19,1,21,0
4400 [131]24,0,25,1,27,0,28,1,30,0,33,0,34,1,36,0,37,1,39,0,0,0
4410 [153][166]11)"eine demonstration? "
4420 cl$[178]" "
4430 br$[178]" waitstop"
4440 [161]a$:[139]a$[178]""[167]4440
4450 [153]"load"
4460 [139]a$[179][177]"j"[167]no[178]1
4470 [141]4600
4480 [142]
4490 [143] change voices
4500 [143]"frefrefrefrefrefrefrefrefrefrefrefrefre
4510 ifwv(0)=17thennw=33
4520 ifwv(0)=33thennw=65
4530 ifwv(0)=65thennw=17
4540 printsd$" waveform"nw:forpp=1to500:next
4550 ifnw=0thennw=17
4560 forpp=0to2:wv(pp)=nw:next
4570 rem other changes
4580 rem"[184][184][184][184][184][184][184][184][184][184][184][184][184]
4590 [142]
4600 [143] hands
4610 [143]"frefrefrefrefre
4620 forpp=0to62:readx:poke832+pp,x:next
4630 forpp=0to62:readx:poke704+pp,x:next
4640 poke2042,13:poke2043,11:pokevd+21,0
4650 pokevd+41,09:pokevd+42,09:rem colour
4660 pokevd+23,12:pokevd+29,12:rem expand
4670 pokevd+27,0:rem priority
4680 return
4690 data1,128,0,2,64,0,3,193,128,3,194,64
4700 data3,195,192,3,199,156,3,199,60,227,207,123
4710 data243,222,247,123,221,238,63,255,254
4720 data31,255,248,15,255,240,15,255,224,7,255
4730 data224,7,255,224,7,255,224,3,255,224
4740 data1,255,192,0,128,64,0,255,192
4750 data0,1,128,0,2,64,1,131,192,2,67,192
4760 data27,227,192,61,227,192,222,243,199,239
4770 data115,207,247,251,222,125,255,252
4780 data63,255,248,31,255,248,15,255,248,7,255,248
4790 data3,255,248,3,255,248,3,255,240,3,255
4800 data224,1,255,192,0,192,64,0,255,192
4810 rem error status
4820 rem"[184][184][184][184][184][184][184][184][184][184][184][184]
4830 [132]15,e0,e1$,e2,e3$
4840 [139]e0[178]0[167][142]
4850 [141]3710:[153]sd$""e1$
4860 [129]pp[178]1[164]1000:[130]:[141]3710:[142]
4870 [143]***********************
4880 :
4890 [143]** introductory tune **
4900 :
4910 [143]************************
4920 [135]m:[129]i[178]1[164]m
4930 [135]n(i),p(i):[130]:[141]5060:[137]1320
4940 [131] 103
4950 [131]12,2,8,2,10,2,12,2,15,2,13,2,13,2,17,2,15,2,15,2
4960 [131]20,2,19,2,20,2,15,2,12,2,8,2,10,2,12,2,13,2,15,2
4970 [131]17,2,15,2,13,2,12,2,10,2,12,2,8,2,7,2,8,2,10,2
4980 [131]3,2,7,2,10,2,13,2,12,2,10,2,12,2,8,2,10,2,12,2
4990 [131]15,2,13,2,13,2,17,2,15,2,15,2,20,2,19,2,20,2,15,2
5000 [131]12,2,8,2,10,2,12,2,5,2,15,2,13,2,12,2,10,2,8,2
5010 [131]3,2,8,2,7,2,8,2,12,2,15,2,20,2,15,2,12,2,8,2
5020 [131]12,2,15,2,18,2,15,2,12,2,8,2,12,2,15,2,17,2,13,2
5030 [131]10,2,7,2,10,2,13,2,15,2,12,2,8,2,5,2,8,2,12,2
5040 [131]13,2,10,2,7,2,3,2,7,2,10,2,13,2,12,2,10,2,8,2
5050 [131]12,2,15,2,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
5060 [153]""[166]12)"**** jesu joy ****"
5070 [143]"
5080 rem" change name ^^^^^ and save!
5090 [142]
5100 [143] release all voices
5110 [143]"frefrefrefrefrefrefrefrefrefrefrefrefrefrefrefrefrefre
5120 forvv=0to2:pokesid++4+7*vv,wv(vv)-1:next:vv=0
5130 forpp=1to80*re:next:return
5140 rem release previous voice
5150 rem"[184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184]
5160 [151]sid[170]4[170]7[172]pv,wv(pv)[171]1
5170 [142]
5180 [143] stop sid
5190 [143]"frefrefrefrefrefrefrefre
5200 forpp=oto2:pokesid+4+7*pp,0:next:vv=0:return
5210 gosub3710:printsd$;:input"which drive 0[157][157][157]";dr$:gosub3710:b=30:an=1
5220 printsd$"hit return[146] when ready to select song."
5230 open15,8,15
5240 open2,8,0,"$"+dr$+":*=s"
5250 get#2,a$:get#2,a$:i$=""
5260 getb$:ifst<>0orb$<>""then5360
5270 fora=1tob:get#2,a$
5280 ifa$=""thena$=chr$(0)
5290 i$=i$+a$:next:ifan=1then5340
5300 printsd$" ":pp=7
5310 u1$=mid$(i$,pp,19):ifleft$(u1$,1)<>chr$(34)thenpp=pp+1:ifpp<19then5310
5320 ifpp>19then100
5330 ifmid$(u1$,2,1)=" "thenprintsd$""u1$
5340 fori1=1to10:i2=tan(i1):next
5350 an=0:i$="":b=32:goto5260
5360 close2:close15:return